package com.nali.dal.statement;

import java.util.List;
import java.util.Map;

import com.nali.dal.expression.ExpressionValue;
import com.nali.dal.expression.query.Criteria;

public interface DalTemplate {

	List<Map<String, Object>> select(String statement, ExpressionValue<Criteria>... conds);
	
	Map<String, Object> selectForObject(String statement, ExpressionValue<Criteria>... conds);
	
	List<Map<String, Object>> select(String statement, ExpressionValue<Criteria>[] conds, int offset, int limit);
	
	long count(String statement, ExpressionValue<Criteria>... conds);

	int selectUpsert(String statement, ExpressionValue<Criteria>... conds);	

	void insert(String statement, Map<String, Object> lineDatas);
	
	int upsert(String statement, Map<String, Object> lineDatas);
	
	SelectBuilder startFor(String statement);

}
